﻿/**
 * jCaches - 数据缓存类
 * @param {Number} cacheSize 最大限制存几个缓存项
 * @param {Boolean} isDebug 是否开启调试，这项只可以在Firefox下设true
 */
var jcache = function(cacheSize){
		
	this.cacheData = new Array();
	this.cacheSize = cacheSize;
	
	/**
	 * 添加
	 * @param {String} id 标识ID
	 * @param {Object} value 值
	 */
	this.put = function(id, value){

		/* 检查是否存在，有的话就更新 */
		if (this.exist(id)) {
			this.update(id, value);
			return ;
		}
		/* 如果满了，就删除第一个 */
		if( this.cacheData.length > this.cacheSize){
			var oldItem = this.cacheData[0];
			this.cacheData.shift();
			var newItem = this.cacheData[0];
		}
				
		/* 向缓存数据添加一项 */
		this.cacheData.push({id:id,value:value});
		return true;
	}

	/**
	 * 更新
	 * @param {String} id 标识ID
	 * @param {Object} value 值
	 */
	this.update = function(id, value){
		var l = this.datalength();
		var item;
		for(var i = 0; i < l; i++){
			item = this.cacheData[i];
			if(item.id == id){
				item.value = value;
				return true;
			}
		};
		return false;
	}
	
	/**
	 * 根据“标识ID”检查缓存是否存在
	 * @param {String} id 标识ID
	 */
	this.exist = function(id){
		/* 通过循环找ID是否存在 */
		var l = this.datalength();
		var item;
		for(var i = 0; i < l; i++){
			item = this.cacheData[i];
			if(item.id == id){
				return true;
			}
		}		
		return false;
	}
	
	/**
	 * 取缓存
	 * @param {String} id 标识ID
	 */
	this.get = function(id){
		var l = this.datalength();
		var item;
		for(var i = 0; i < l; i++){
			item = this.cacheData[i];
			if(item.id == id){
				return item.value;
			}
		}
		return null;
	}
	
	/**
	 * 清空缓存
	 */
	this.clear = function(){
		this.cacheData =  new Array();
	}
	
	/**
	 * 缓存实际大小
	 */
	this.datalength = function(){
		return this.cacheData.length;
	}
	
	/**
	 * 缓存大小
	 */
	this.datasize = function(){
		return this.cacheSize;
	}
};


